Foi utilizado como base para este Trabalho Final textos em formato pdf oriundos do sítio da OCDE (http://mneguidelines.oecd.org). Assim, as manipulações e análises realizadas se valeram, basicamente, da contagem da frequência das palavras encontradas em cada texto considerando a evolução histórica da linguagem utilizada.
Cole o link do dataset aqui Exemplo: https://www....
Para o ano de 2000, o texto mais representativo deve ser "OECD Guidelines for Multinational Enterprises, Revision 2000" disponivel em https://www.oecd-ilibrary.org/governance/oecd-guidelines-for-multinational-enterprises_9789264033979-en, mas não tive acesso pois está em área logada do sítio da OCDE.
Assim, utilizei um texto alternativo: http://www.oecd.org/daf/inv/mne/2000reviewoftheoecdguidelinesformultinationalenterprises.htm aide memoire , December 2000 = "https://www.oecd.org/corporate/mne/2439128.pdf"
Texto selecionado de 2011: path_Due_Diligence_Guidance = "http://www.oecd.org/daf/inv/mne/48004323.pdf"
Texto selecionado de 2018: path_Due_Diligence_Guidance = 'http://mneguidelines.oecd.org/OECD-Due-Diligence-Guidance-for-Responsible-Business-Conduct.pdf'
Objetivou-se aplicar as ferramentas apresentadas no curso e, também, testar a capacidade de enfrentar novos desafios numa tentativa de testar a capacidade de aprender a aprender.
Assim, considerando que muito recentemente passei a integrar a equipe do Ponto de Contato Nacional da CAMEX no Ministério da economia, intentei avaliar a evolução dos termos mais utilizados em textos específicos para avaliar a mudança na linguagem utiliada.
Sendo mais específico, o cerne era avaliar a alteração do discurso sobre as Políticas de Conduta Empresarial Responsável.
Seguindo o ensinamento dado em sala de aula, tentei realizar todos os procedimentos necessários para o desenvolvimento do trabalho, ou seja, iniciando com o primeiro texto e passando por todas as etapas. Em seguida, novamente passando por todas as etapas, mas objetivando aprimorar tanto os scripts quanto a apresentação.
Até que, finalmente, seguisse para a consolidação e apresentação do resultado.
Assim, nesse jupyter será apresentado apenas o resultado final do trabalho, ou seja, a etapa: "3. Produção: objetivos: apresentar resultados e análises (05/12/2020)"
Etapas desenvolvidas no trabalho
Pré-teste: objetivo é saber se é possível fazer. (29/11/2020)
Teste: objetivos: aumentar a amostra de textos, verificar a validade da análise (03/12/2020)
Produção: objetivos: apresentar resultados e análises (05/12/2020)
A seguir, serão apresentados os scripts desenvolvidos. Importante destacar que muitos dos códigos foram inspirados em soluções encontradas em pesquisas na internet, mas customizados para atender ao caso concreto.
# Install a pip package in the current Jupyter kernel
#Solução para instalar o pacote: PyPDF2
import sys
!{sys.executable} -m pip install PyPDF2
!{sys.executable} -m pip install wordcloud
!{sys.executable} -m pip install seaborn
#Pacotes usados
import PyPDF2 #leitor de pdf
from PyPDF2 import PdfFileMerger, PdfFileReader
from collections import Counter #contar palavras
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator #para núvem de palavras
import matplotlib.pyplot as plt #autoexplicativo
from matplotlib.colors import ListedColormap #alterar cores no gráfico
import matplotlib.gridspec as gridspec #diagramar
import matplotlib.image as mpimg #plotar imagens
import matplotlib.patheffects as path_effects #efeitos no texto
#mostrar o gráfico no próprio jupyter
%matplotlib inline
import seaborn as sns
import pandas as pd #autoexplicativo
# from pandas.tools.plotting import table
#Configurações específicas de língua para português
import locale
locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8')
import os #auxiliar nos caminhos
from urllib import request #pacote para baixar pdf da internet
import urllib
from IPython.core.display import display, HTML
#Verificar o local de trabalho
os.getcwd()
#####----- FUNÇÕES USADO NO TRABALHO FINAL -----#####
###função para buscar os arquivos na internet
def download_file(download_url, filename):
response = urllib.request.urlopen(download_url)
file = open(filename + ".pdf", 'wb')
file.write(response.read())
file.close()
return (filename + ".pdf")
###função para extrair e consolidar texto
def extrai_texto(nome_arquivo):
#Abre o documento
pdfFileObj = open(nome_arquivo, 'rb')
# create an object of PdfFileReader class of PyPDF2 module and pass the pdf file object & get a pdf reader object.
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
#iterar por todas as páginas e consolidar o texto de forma a ser lido no próxima etapa.
i = 0
palavras_final = ' '
while i < pdfReader.getNumPages():
pageObj = pdfReader.getPage(i)
palavras_parcial = pageObj.extractText().upper()
palavras_final = palavras_final + palavras_parcial
i+=1
pdfFileObj.close() # close the pdf file object.
return palavras_final
###função para constuir a nuvem de palavras
def nuvem_palavras(palavras_final):
#defini cores das palavras
#mapa_cores = ListedColormap(['#DCDCDC', '#F0E68C', '#E9967A'])
wordcloud = WordCloud(stopwords=stopwords,
background_color='white',
#colormap = mapa_cores,
repeat=True,
width=1600,
height=800).generate(palavras_final)
return wordcloud
###Desenha o gráfico
def plotar_gráfico(wordcloud, nome_figura, ano):
fig, ax = plt.subplots(figsize=(32,8))
ax.imshow(wordcloud, interpolation='bilinear')
ax.set_axis_off()
plt.title(ano, fontsize=40, color='#800000')
plt.imshow(wordcloud)
wordcloud.to_file(nome_figura + ".jpg");
###Imprimir as 10 palavras que mais se repetem
def maiores10(lista):
dictlist = []
for key in lista.words_.keys():
temp = [key]
dictlist.append(temp)
df = pd.DataFrame(dictlist[:10]).rename(columns={0: "10 +"})
return df
###Imprimir tabelas lado a lado - CÓPIGO COPIADO DA WEB
def display_side_by_side(dfs:list, captions:list):
"""Display tables side by side to save vertical space
Input:
dfs: list of pandas.DataFrame
captions: list of table captions
"""
output = ""
combined = dict(zip(captions, dfs))
for caption, df in combined.items():
output += df.style.set_table_attributes("style='display:inline'").set_caption(caption)._repr_html_()
output += "\xa0\xa0\xa0"
display(HTML(output))
#A biblioteca STOPWORDS do pacote wordcloud é utilizada para eliminar
#provérbios e algumas palavras que devem ser excluídas do texto,
#exemplo (de, do, da, em, na, no, I, you) e entre outras.
stopwords = set(STOPWORDS)
#caso queira acrescentar palavras!
stopwords.update(["e", ".","da", "meu", "em", "você", "de", "ao", "os", 'edition','may','g',
'MNE', 'SEE SECTION', 'WILL', 'ONE', 'ˆ ˆ', '^', 'b'])
### 1 - Baixar textos da web
##Caminho texto de 2018:
ocde_Due_Diligence_Guidance_for_RBC_2018 = 'http://mneguidelines.oecd.org/OECD-Due-Diligence-Guidance-for-Responsible-Business-Conduct.pdf'
#função para download: caminho e nome; atrubindo um nome para o arquivo para a próxima etapa
ocde_2018_pdf = download_file(ocde_Due_Diligence_Guidance_for_RBC_2018, "ocde_Due_Diligence_Guidance_for_RBC_2018")
##Caminho texto de 2011:
ocde_Guidelines_for_Multinational_Enterprises_2011_Edition = 'http://www.oecd.org/daf/inv/mne/48004323.pdf'
#função para download: caminho e nome; atrubindo um nome para o arquivo para a próxima etapa
ocde_2011_pdf = download_file(ocde_Guidelines_for_Multinational_Enterprises_2011_Edition,"ocde_Guidelines_for_Multinational_Enterprises_2011_Edition")
##Caminho texto de 2000:
ocde_Information_Meeting_2000 = 'https://www.oecd.org/corporate/mne/2439128.pdf'
#função para download: caminho e nome; atrubindo um nome para o arquivo para a próxima etapa nome
ocde_2000_pdf = download_file(ocde_Information_Meeting_2000, "ocde_Information_Meeting_2000")
###função para extrair e consolidar texto
ocde_2018_texto = extrai_texto(ocde_2018_pdf)
ocde_2011_texto = extrai_texto(ocde_2011_pdf)
ocde_2000_texto = extrai_texto(ocde_2000_pdf)
###função para constuir a nuvem de palavras
ocde_2018_cloud = nuvem_palavras(ocde_2018_texto)
ocde_2011_cloud = nuvem_palavras(ocde_2011_texto)
ocde_2000_cloud = nuvem_palavras(ocde_2000_texto)
###Desenha o gráfico
plotar_gráfico(ocde_2018_cloud, 'ocde_Due_Diligence_Guidance_for_RBC_2018', '2018')
plotar_gráfico(ocde_2011_cloud, 'ocde_Guidelines_for_Multinational_Enterprises_2011_Edition', '2011')
plotar_gráfico(ocde_2000_cloud, 'ocde_Information_Meeting_2000', '2000')
titulo = "Evolução da Linguagem - OCDE - Conduta Empresarial Resposável"
objetivo = """Objetivou-se aplicar as ferramentas apresentadas no curso e, também, testar a capacidade\n
de enfrentar novos desafios numa tentativa de testar a capacidade de aprender a aprender. \n
Assim, considerando que muito recentemente passei a integrar a equipe do Ponto de Contato Nacional \n
da CAMEX no Ministério da economia, intentei avaliar a evolução dos termos mais utilizados em textos \n
específicos para avaliar a mudança na linguagem utiliada."""
# Sendo mais específico, o cerne era avaliar a alteração do discurso sobre as Políticas de Conduta Empresarial Responsável.
conclusao = "Conclusões e Recomendações"
conclusao_texto = """Considerando que o objetivo do documento de 2018 era "ajudar as empresas a compreender\n
e aplicar a devida diligência para a CER, tal como prevista nas Diretrizes da OCDE para EMNs.\n
Este Guia também procura promover um entendimento comum entre governos e partes interessadas\n
sobre a devida diligência para a CER", ao que a nuvem de palavras indica, a OCDE evolui seu\n
discurso focando delegar maior responsabilidade pela conduta empresarial às próprias empresas.\n
E, ainda, fornecendo exemplos e definições do que é Conduta Empresaria Responsável."""
plt.figure(figsize=(60, 40))
G = gridspec.GridSpec(4, 3)
axes_1 = plt.subplot(G[0, :])
plt.xticks(())
plt.yticks(())
plt.title(titulo, fontsize=80, color='#800000')
plt.text(0.5, 0.5, objetivo, ha='center', va='center', size=50, alpha=.5)
axes_3 = plt.subplot(G[1:3, 0])
plt.xticks(())
plt.yticks(())
plt.title('2000', fontsize=80, color='#800000')
img = mpimg.imread('ocde_Information_Meeting_2000.jpg')
plt.imshow(img)
axes_4 = plt.subplot(G[1:3, 1])
plt.xticks(())
plt.yticks(())
plt.title('2011', fontsize=80, color='#800000')
img = mpimg.imread('ocde_Guidelines_for_Multinational_Enterprises_2011_Edition.jpg')
plt.imshow(img)
axes_5 = plt.subplot(G[1:3, 2])
plt.xticks(())
plt.yticks(())
plt.title('2018', fontsize=80, color='#800000')
img = mpimg.imread('ocde_Due_Diligence_Guidance_for_RBC_2018.jpg')
plt.imshow(img)
axes_2 = plt.subplot(G[3,:])
plt.xticks(())
plt.yticks(())
plt.title(conclusao, fontsize=80, color='#800000')
plt.text(0.5, 0.5, conclusao_texto, ha='center', va='center', size=50, alpha=.5, color='#000000')
plt.tight_layout()
plt.show()
#Rankando as palavras mais usadas em cada período
display_side_by_side([maiores10(ocde_2000_cloud), maiores10(ocde_2011_cloud),maiores10(ocde_2018_cloud)],
['10 + de 2000', '10 + de 2011', '10 + de 2018'])
Evoluções necessárias
1- Esmaecer (ou colorir de cinza claro) as palavras não relevante. 2- Acrescentar o ranking das palavras mais usada em cada ano.
Aparentemetne há uma evolução do discruso que no ano 2000 girava em torno da definição de diretrizes, declaração, questões e instrumentos para um foco nas empresas, informação e recomendação em 2011.
Já em 2018, passou-se a utilizar um discurso mais focado em termos como "DUE DILIGENCE", "RESPONSIBLE BUSINESS", "BUSINESS CONDUCT", "EXAMPLE" e "ADVERSE IMPACT".
Considerando que o objetivo do documento de 2018 era "ajudar as empresas a compreender e aplicar a devida diligência para a CER, tal como prevista nas Diretrizes da OCDE para EMNs. Este Guia também procura promover um entendimento comum entre governos e partes interessadas sobre a devida diligência para a CER", ao que a nuvem de palavras indica, a OCDE evolui seu discurso focando delegar maior responsabilidade pela conduta empresarial às próprias empresas. E, ainda, fornecendo exemplos e definições do que é Conduta Empresaria Responsável.